package com.wuliner.unlock_new

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
import java.io.File
import java.io.ObjectInputStream
import java.io.ObjectOutputStream

@Parcelize
class User(var name:String,var numPsd:String,var patternPsd:String) :Parcelable {

    companion object {
         var users :ArrayList<User> = arrayListOf()  //所有用户信息
         private lateinit var user:User                      //暂存用户信息

       //通过用户名查找User
        fun loadUserInfo(name: String):User?{
            users.forEach{ if (it.name == name) return it }
            return null
        }

        //数字注册界面 使用这个先存储 name,numPsd信息
        fun storeNum(name: String,numPsd: String){
            user = User(name,numPsd,"")
        }
        //图案注册界面  使用这个存储 patternPsd
        fun addUser(patternNum:String){
            user.patternPsd = patternNum
            users.add(user)
            storeInfo()
        }
        //静态初始化 读取所有的用户信息 到users
        init {
            try {
                val target = MainActivity.appContext
                // 获取内部存储目录
                val path = target.filesDir
                // 创建一个文件夹
                val letDirectory = File(path, "LET")
                letDirectory.mkdirs()
                // 创建一个文件
                val file = File(letDirectory, "users.txt")
                if (file.exists()) {
                    // 使用ObjectInputStream读取对象
                    val objectInputStream = ObjectInputStream(file.inputStream())
                    objectInputStream.use { users = it.readObject() as ArrayList<User> }
                }
            } catch (e: Exception) {
                // 处理异常
                e.printStackTrace()
            }
        }

        //存储所有用户信息
        private fun storeInfo(){
                val target = MainActivity.appContext
                val path = target.filesDir
                val letDirectory = File(path,"LET")
                letDirectory.mkdir()
                //创建文件
                val file = File(letDirectory,"users.txt")
                val objectOutputStream = ObjectOutputStream(file.outputStream())
                objectOutputStream.use { it.writeObject(users) }
        }
    }
}